package a02threadpool2;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86131
 * Date: 2024-04-26
 * Time: 19:21
 */
public class MyThreadPoolDemo1 {
    public static void main(String[] args) {
        /*ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor
          (核心线程数量,最大线程数量,空闲线程最大存活时,任务队列,创建线程工厂,任务的决绝策略);
          参数一: 核心线程数量      不能小于0
          参数二: 最大线程数        不能小于等于0,最大数量 >= 核心线程数量
          参数三: 空闲线程最大存活时间  不能小于0
          参数四: 时间单位          用TimeUnit指定
          参数五: 任务队列          不能为null
          参数六: 创建线程工厂       不能为null
          参数七: 任务的拒绝策略      不能为null
          */
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,  //核心线程数量,不能小于0
                6,  //最大线程数,不能小于0,最大数量 >= 核心线程数量
                60,  //秒
                TimeUnit.SECONDS,  //时间单位
                new ArrayBlockingQueue<>(3),
                Executors.defaultThreadFactory(),  //创建线程工厂
                new ThreadPoolExecutor.AbortPolicy()    //静态内部类:拒绝策略
        );
    }
}
